import os
from pathlib import Path

from emi.core.App import App

_RES_DIR = "res"

class res:


    @staticmethod
    def getDir():
        pwd = os.getcwd()
        dirPath = Path(pwd)
        return res.__getDir(dirPath)

    @staticmethod
    def __getDir(dirPath:Path):
        resDirPath = dirPath.joinpath(_RES_DIR)
        if resDirPath.exists():
            return resDirPath
        return res.__getDir(dirPath.parent)

    @staticmethod
    def getFile(filePath:str):
        """
        返回资源文件。
        """
        dirPath = res.getDir().joinpath(filePath)
        return dirPath


class TestUtils:

    __Test_APP = None

    @staticmethod
    def getTempDirRoot():
        """
        返回临时文件夹
        """
        resDirPath = res.getDir();
        tempDir = resDirPath.parent.joinpath("temps")
        if not tempDir.exists():
            tempDir.mkdir()
        return tempDir


    @staticmethod
    def getTempPath(filtPath:str):
        """
        返回临时文件
        相对路径。
        """
        tempDir = TestUtils.getTempDirRoot()
        tempPath = tempDir.joinpath(filtPath)
        tmmpDirParent = tempPath.parent
        if not tmmpDirParent.exists():
            tmmpDirParent.mkdir(parents=True)
        return tempPath


    @staticmethod
    def getApp()->App:
        if TestUtils.__Test_APP is None:
            app_dir = TestUtils.getTempPath("test_app_dir")
            TestUtils.__Test_APP = App(app_dir)
        return TestUtils.__Test_APP